package com.gimi.cloud.jimi.client.service.userInfo.impl;

import com.gimi.cloud.jimi.client.service.userInfo.MoreInfoService;
import com.gimi.cloud.jimi.dao.dao.moreInfo.MoreInfoDao;
import com.gimi.cloud.jimi.dto.app.moreInfo.MoreInfoDTO;
import com.gimi.cloud.jimi.entity.app.moreInfo.MoreInfoEntity;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MoreInfoServiceImpl implements MoreInfoService {

    @Autowired
    private MoreInfoDao moreInfoDao;

    @Override
    public void saveMoreInfoService(MoreInfoDTO moreInfoDTO) {
        MoreInfoEntity moreInfoEntity = new MoreInfoEntity();
        BeanUtils.copyProperties(moreInfoDTO, moreInfoEntity);
        if(moreInfoEntity.getfId() != null && moreInfoEntity.getfId() != 0) {
            moreInfoDao.updateByPrimaryKey(moreInfoEntity);
        } else {
            moreInfoDao.baseInsert(moreInfoEntity);
        }
    }

    @Override
    public MoreInfoDTO getMoreInfoByUserIdAndType(Integer userId, String type) {
        MoreInfoEntity moreInfoEntity = moreInfoDao.getMoreInfoByUserIdAndType(userId, Integer.parseInt(type));
        MoreInfoDTO moreInfoDTO = new MoreInfoDTO();
        if(moreInfoEntity != null) {
            BeanUtils.copyProperties(moreInfoEntity, moreInfoDTO);
        }
        return moreInfoDTO;
    }

	@Override
	public Map<String, Object> getAuthenticationInfo(Integer userId) {
		Map<String, Object> map = new HashMap<>();
		List<MoreInfoDTO> list = moreInfoDao.selectByUser(userId);
		//无数据
		if (list == null || list.size() == 0) {
			map.put("status", 0);
			return map;
		}
		List<MoreInfoDTO> effectionList = moreInfoDao.isEffection(userId);
		//有数据未过期
		if (list != null && effectionList != null && effectionList.size() > 0) {
			map.put("status", 1);
			map.put("data", effectionList);
			return map;
		}else {
		//有数据 已经过期
			map.put("status", 2);
			return map;
		}
	}
}
